package com.blog4j.auth.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.blog4j.auth.context.LoginContext;
import com.blog4j.auth.vo.req.PhoneLoginReqVo;
import com.blog4j.auth.vo.req.WebLoginReqVo;
import com.blog4j.auth.vo.resp.AesKeyAndIvRespVo;

/**
 * @author 98k灬
 * @version v1.0.0
 * @Description : 功能描述
 * @Create on : 2024/6/21 19:57
 **/
public interface AuthService {
    /**
     * 登录
     *
     * @param loginContext 登录信息
     */
    void login(LoginContext loginContext);

    /**
     * 退出登录
     *
     * @param userId 用户ID
     */
    void logout(String userId);

    /**
     * 获取AES前后端加解密的KEY和IV
     *
     * @return 前后端加解密的KEY和IV
     */
    AesKeyAndIvRespVo getAesKeyAndIv();

    /**
     * 手机号码登录
     *
     * @param reqVo 登录信息
     * @return token信息
     */
    SaTokenInfo phoneLogin(PhoneLoginReqVo reqVo);

    /**
     * web端登录
     *
     * @param reqVo 请求信息
     * @return 登录成功的信息
     */
    SaTokenInfo webLogin(WebLoginReqVo reqVo);
}
